function quickSort(arr) {
    if (arr.length <= 1) return arr
    let mid = arr[0]
    let left = []
    let right = []
    for (let i = 0; i < arr.length; i ++) {
        if (arr[i] < mid) left.push(arr[i])
        else if (arr[i] > mid) {
            right.push(arr[i])
        }
    }
    return [...quickSort(left), mid, ...quickSort(right)]
}
// 重写Array.prototype.sort()
Array.prototype.mySort2 = function (callback) {
    let arrayCopy = [...this]; // 创建当前数组的副本
    if (callback) { // 如果传入了回调函数

    } else { // 否则使用快速排序算法进行排序
        arrayCopy = quickSort(arrayCopy);
    }
    for (let i = 0; i < this.length; i++) { // 使用排序后的数组替换当前数组中的元素
        this[i] = arrayCopy[i];
    }
    return this; // 返回排序后的当前数组
};
// 测试用例
const arr = [5, 3, 8, 1, 2, 7, 4, 6];
// console.log(arr.mySort2()); // [1, 2, 3, 4, 5, 6, 7, 8]
console.log(arr.mySort2((a, b) => b - a)); // [8, 7, 6, 5, 4, 3, 2, 1]
